//
//  HMFindViewController.swift
//  WeiBo
//
//  Created by apple on 16/6/23.
//  Copyright © 2016年 itheima. All rights reserved.
//

import UIKit

class HMFindViewController: HMBaseTableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
         visitorView.setupInfo(false, image: "visitordiscover_image_message", messaeg: "登录后，最新、最热微博尽在掌握，不再会与实事潮流擦肩而过")
        
        tabBarItem.badgeValue = "11"
        
        findBaderView()
        
        tabBarItem.badgeValue = nil
        
        tabBarItem.badgeValue = "15"
    }

    func findBaderView(){
        
        // 1. 遍历 tabBar 的子视图
        for childTabBarView in self.tabBarController!.tabBar.subviews {
            
//            print(childTabBarView)
            // 为了确保有这个类,程序员需要确保解包不会崩溃
            if childTabBarView.isKindOfClass(NSClassFromString("UITabBarButton")!){
                
                
                // 2. 再遍历UITabBarButton 的子视图
                for childTabbarButton in childTabBarView.subviews {
                    
//                    print(childTabbarButton)
                    // 判断视图是否是 _UIBadgeView
                    if childTabbarButton.isKindOfClass(NSClassFromString("_UIBadgeView")!){
                        
                        
                        // 3. 再继续遍历_UIBadgeView的子视图
                        for childBadgeView in childTabbarButton.subviews {
                            
//                            print(childBadgeView)
                            // 再次判断
                            if childBadgeView.isKindOfClass(NSClassFromString("_UIBadgeBackground")!){
                                
//                                print("终于找到了,还好我没有放弃")
                                
                                // 对私有属性进行赋值,需要找到他的私有属性
                                // 对私有属性赋值 用KVC
                                
                                // 找打这个类的属性
                                
                                // 有多少个属性
                                var count: UInt32 = 0
                                
                                let result = class_copyIvarList(NSClassFromString("_UIBadgeBackground"), &count)
                                
                                
                                // 对属性进行遍历
                                for i in 0..<count {
                                    
                                    // 1. 先要拿到 ivar
                                    // 把Uint32类型的 i 转换成 Int类型
                                    let ivar = result[Int(i)]
                                    
                                    // 2. 获取一下 属性的cstring
                                    let cname = ivar_getName(ivar)
                                    
                                    // 3. 把 cString类型转换成String
                                    let name = String(CString: cname, encoding: NSUTF8StringEncoding)
                                    
                                    print(name)
                                    
                                }
                                
                                // 可以通过 KVC 给属性赋值
                                childBadgeView.setValue(UIImage(named: "main_badge"), forKey: "_image")
                                
                            }
                            
                            
                        }
                        
                    }
                    
                }
                
            }
            
        }
        
    }
    
}
